﻿namespace Atlantis
{
    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;

    public interface IAPIClient
    {
        #region Properites

        /// <summary>
        ///     Gets the underlying TcpClient supporting the IAPIClient
        /// </summary>
        TcpClient Client { get; }

        /// <summary>
        ///     Performs a socket disconnect and sends any API disconnects through the socket.
        /// </summary>
        /// <returns></returns>
        bool Disconnect();

        /// <summary>
        ///     Gets or sets the encoding for the streams
        /// </summary>
        Encoding Encoding { get; set; }

        string Host { get; set; }

        bool IsBackground { get; set; }

        bool IsInitialized { get; }

        int Port { get; set; }

        #endregion

        #region  Methods

        bool Send(string data, params object[] args);

        void Start();

        void Stop();

        bool WriteLog { get; set; }

        #endregion
    }
}
